[Amazon FSx for NetApp ONTAP] ボリュームの定期バックアップとSnapshot policyはどちらも設定しよう
ボリュームの定期バックアップだけを行えば良いのか
こんにちは、のんピ(@non____97)です。
皆さんは「Amazon FSx for NetApp ONTAP(以降FSx for ONTAP)ボリュームの定期バックアップをしていればSnapshotを定期的に取得とる必要はないのでは?」と思ったことはありますか? その考えは注意する必要があります。
以下記事で紹介している通り、ボリュームのバックアップの裏側ではS3 SnapMirrorが動いています。
その過程でSnapshotが取得されます。
しかし、ボリュームの定期バックアップとSnapshot policyはどちらも設定することをオススメします。
以降、その理由について説明します。
いきなりまとめ
- ボリュームの定期バックアップのみはオススメしない理由
- 取得間隔が1時間未満のバックアップ設定ができない
- バックアップによって取得されるSnapshotは2つまでしか保持できない
- Snapshot policyのみはオススメしない理由
- ボリュームが破損した場合にリストアできない
- ボリュームあたりSnapshotは最大1,023個保持可能
- バックアップからリストアしたボリュームには、バックアップで取得したSnapshot以外が含まれない
- SnapRestoreの場合は、使用したSnapshotよりも前に取得されているSnapshotを保持することができる
- ボリュームの定期バックアップとSnapshot policyはどちらも設定して
ボリュームの定期バックアップのみはオススメしない理由
取得間隔が1時間未満のバックアップ設定ができない
ボリュームの定期バックアップのみはオススメしない理由から紹介します。
1つ目の理由は「取得間隔が1時間未満のバックアップ設定ができない」点です。
FSxの設定でボリュームの自動バックアップを有効化すると、1日1回ボリュームのバックアップが取得されます。
1時間に1回や、1週間に1回などバックアップ取得のタイミングをカスタマイズしたい場合は、AWS Backupで取得するのがオススメです。
しかし、AWS Backupによるバックアップ取得間隔は最低でも1時間です。
1時間未満の間隔でバックアップを取得するようなCron式を設定するとError in rule test : The interval between backup jobs shouldn't be less than 60 minutes.
と怒られます。
一方、Snapshot policyでは5分間隔など、より自由度を高くSnapshotを取得することが可能です。
実際に5分間隔でSnapshotを取得できることを試してみます。
# Snapshotが存在しないことを確認 ::> snapshot show -vserver SVM -volume vol1 There are no entries matching your query. # ボリュームに設定しているSnapshot policyの確認 ::> volume show -vserver SVM -volume vol1 -fields snapshot-policy vserver volume snapshot-policy ------- ------ --------------- SVM vol1 none # 5分間隔のcronの確認 ::> cron show (job schedule cron show) Cluster Vserver Name Description ------- -------- ----------- -------------------------------------------------- FsxId05f72eb8f8d03c709 FsxId05f72eb8f8d03c709 10min @:00,:10,:20,:30,:40,:50 12-hourly @0:15,12:15 5min @:00,:05,:10,:15,:20,:25,:30,:35,:40,:45,:50,:55 6-hourly @0:15,6:15,12:15,18:15 8hour @2:15,10:15,18:15 daily @0:10 hourly @:05 monthly 1@0:20 pg-15-minutely @:10,:25,:40,:55 pg-6-hourly @3:03,9:03,15:03,21:03 pg-daily @0:10 pg-daily-set2 @6:25 pg-daily-set3 @12:40 pg-daily-set4 @18:55 pg-hourly @:07 pg-hourly-set2 @:22 pg-hourly-set3 @:37 pg-hourly-set4 @:52 pg-remote-15-minutely @:00,:15,:30,:45 pg-remote-6-hourly @3:08,9:08,15:08,21:08 pg-remote-daily @0:15 Cluster Vserver Name Description ------- -------- ----------- -------------------------------------------------- FsxId05f72eb8f8d03c709 FsxId05f72eb8f8d03c709 pg-remote-hourly @:12 pg-remote-weekly Sun@0:20 pg-weekly Sun@0:15 pg-weekly-set2 Tue@4:30 pg-weekly-set3 Thu@10:44 pg-weekly-set4 Sat@16:59 timezone-test @19:05 weekly Sun@0:15 29 entries were displayed. # 5分間隔で30世代までSnapshotを取得するSnapshot policyの作成 ::> snapshot policy create -policy 5min -enabled true -schedule1 5min -count1 30 -prefix1 5min # 作成したSnapshot policyの確認 ::> snapshot policy show -policy 5min Vserver: FsxId05f72eb8f8d03c709 Number of Is Policy Name Schedules Enabled Comment ------------------------ --------- ------- ---------------------------------- 5min 1 true - Schedule Count Prefix SnapMirror Label ---------------------- ----- ---------------------- ------------------- 5min 30 5min - # 作成したSnapshot policyをボリュームに割り当て ::> volume modify -vserver SVM -volume vol1 -snapshot-policy 5min Warning: You are changing the Snapshot policy on volume "vol1" to "5min". Snapshot copies on this volume that do not match any of the prefixes of the new Snapshot policy will not be deleted. However, when the new Snapshot policy takes effect, depending on the new retention count, any existing Snapshot copies that continue to use the same prefixes might be deleted. See the 'volume modify' man page for more information. Do you want to continue? {y|n}: y Volume modify successful on volume vol1 of Vserver SVM. # ボリュームに設定しているSnapshot policyの確認 ::> volume show -vserver SVM -volume vol1 -fields snapshot-policy vserver volume snapshot-policy ------- ------ --------------- SVM vol1 5min
その後20分ほど放置しました。すると5分間隔で4つのSnapshotが取得されていることを確認できました。
::> snapshot show -vserver SVM -volume vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1 5min.2023-03-19_1155 128KB 0% 0% 5min.2023-03-19_1200 128KB 0% 0% 5min.2023-03-19_1205 128KB 0% 0% 5min.2023-03-19_1210 124KB 0% 0% 4 entries were displayed.
バックアップによって取得されるSnapshotは2つまでしか保持できない
1つ目の理由を受けて、「バックアップ取得間隔が1時間以上であればAWS Backupによるバックアップのみで良いのでは?」や「「バックアップ取得間隔を1時間未満にしたいのであればEventBridge Schedulerからバックアップ取得SDK(CreateVolumeFromBackup
)を定期実行すれば良いのでは?」と思われる方もいらっしゃるかもしれません。
ここで2つ目の理由の「バックアップによって取得されるSnapshotは2つまでしか保持できない」という制約が立ち塞がります。
AWS公式ドキュメントにもバックアップによりSnapshotが正常に作成されると、以前のSnapshotを削除するような記載があります。
バックアップの仕組み
Amazon FSx バックアップは、スナップショット (ある時点のボリュームの読み取り専用イメージ) を使用して、バックアップ間の増分を維持します。バックアップが行われるたびに、Amazon FSx はまずボリュームのスナップショットを作成します (スナップショットはボリュームに保存され、SSD ストレージ層の領域が消費されます)。次に、Amazon FSx は、このスナップショットを以前のバックアップスナップショット (存在する場合) と比較し、変更されたデータのみをバックアップにコピーします。以前のバックアップスナップショットが存在しない場合は、最新のバックアップスナップショットの内容全体がバックアップにコピーされます。最新のバックアップスナップショットが正常に作成されると、Amazon FSx は以前のバックアップスナップショットを削除します。プロセスが繰り返される場合、最新のバックアップに使用されたスナップショットは、次のバックアップが作成されるまで、ボリュームに残ります。
そのため、たとえ日時でバックアップを取得し、7日間保持するような設定をしていても、3日前のSnapshotを使ってリストアすることはできません。Snapshotを使ったリストア方法は以下記事をご覧ください。
実際に複数回バックアップを取得して、古いバックアップのSnapshotが削除されることを確認します。
バックアップが何もない状態から行います。
backup-1
というバックアップを取得します。
7分ほど待つと、バックアップのステータスが利用可能
になっていました。
ONTAP CLIからも確認します。管理アクティビティの監査ログとSnapshot一覧を確認します。
# 管理アクティビティの監査ログ ::> security audit log show -fields timestamp, node, application, location, vserver, username, input, state, message -state Error|Success -timestamp >"Sub Mar 19 12:15:00 2023" timestamp node application location vserver username input state message -------------------------- ------------------------- ----------- ------------- ---------------------- ----------------- --------------------------------------------------------------------------------------------------------------------------- ------- ------- "Sun Mar 19 12:16:56 2023" FsxId05f72eb8f8d03c709-01 http 52.204.237.29 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/cluster/licensing/access_tokens/ : {"client_secret":***,"grant_type":"client_credentials","client_id":"clientId"} Success - "Sun Mar 19 12:16:56 2023" FsxId05f72eb8f8d03c709-01 http 52.204.237.29 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/?return_records=true : {"destination":{"path":"amazon-fsx-ontap-backup-us-east-1-d78270f6-461eaaf0:/objstore/0c000000-017f-47d6-0000-0000003e476c","uuid":"0c000000-017f-47d6-0000-0000003e476c"},"policy":{"name":"FSxPolicy"},"source":{"path":"SVM:vol1"}} Success - "Sun Mar 19 12:16:56 2023" FsxId05f72eb8f8d03c709-01 http 52.204.237.29 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships : uuid=8131e849-c604-11ed-b946-e1cdfb9c8ff0 isv_name="AWS FSx" Success - "Sun Mar 19 12:17:58 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/storage/volumes/b05dd804-9a1a-11ed-946a-5191ab1a5297/snapshots?return_records=true : {"name":"backup-0dbadec33e80446d4"} Success - "Sun Mar 19 12:17:58 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/cluster/licensing/access_tokens/ : {"client_secret":***,"grant_type":"client_credentials","client_id":"clientId"} Success - "Sun Mar 19 12:17:58 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers : isv_name="AWS FSx" Success - "Sun Mar 19 12:17:58 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers?return_records=true : {"source_snapshot":"backup-0dbadec33e80446d4"} Success - "Sun Mar 19 12:19:42 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane GET /api/private/cli/vserver/cifs/check/?fields=status%2Cstatus_details Success - "Sun Mar 19 12:19:42 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane GET /api/private/cli/vserver/cifs/check/?fields=status%2Cstatus_details Success - 9 entries were displayed. # backup から始まるSnapshot一覧 ::> snapshot show -vserver SVM -volume vol1 -snapshot backup* Vserver: SVM Volume: vol1 Snapshot: backup-0dbadec33e80446d4 Creation Time: Sun Mar 19 12:17:58 2023 Snapshot Busy: false List of Owners: - Snapshot Size: 128KB Percentage of Total Blocks: 0% Percentage of Used Blocks: 0% Comment: - 7-Mode Snapshot: false Label for SnapMirror Operations: - Snapshot State: - Constituent Snapshot: false Expiry Time: - SnapLock Expiry Time: -
backup-0dbadec33e80446d4
というSnapshotが取得されていますね。
続いてbackup-2
というバックアップを取得します。
5分ほど待つとバックアップのステータスが利用可能
になっていました。
ONTAP CLIからも確認します。管理アクティビティの監査ログとSnapshot一覧を確認します。
# 管理アクティビティの監査ログ ::> security audit log show -fields timestamp, node, application, location, vserver, username, input, state, message -state Error|Success -timestamp >"Sub Mar 19 12:25:00 2023" timestamp node application location vserver username input state message -------------------------- ------------------------- ----------- ----------- ---------------------- ----------------- ---------------------------------------------------------------------------------------------------------------------------------- ------- ------- "Sun Mar 19 12:25:53 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/storage/volumes/b05dd804-9a1a-11ed-946a-5191ab1a5297/snapshots?return_records=true : {"name":"backup-00fd2b2db4b88d97e"} Success - "Sun Mar 19 12:25:54 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/cluster/licensing/access_tokens/ : {"client_secret":***,"grant_type":"client_credentials","client_id":"clientId"} Success - "Sun Mar 19 12:25:54 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers : isv_name="AWS FSx" Success - "Sun Mar 19 12:25:54 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers?return_records=true : {"source_snapshot":"backup-00fd2b2db4b88d97e"} Success - 4 entries were displayed. # backup から始まるSnapshot一覧 ::> snapshot show -vserver SVM -volume vol1 -snapshot backup* ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1 backup-0dbadec33e80446d4 128KB 0% 0% backup-00fd2b2db4b88d97e 128KB 0% 0% 2 entries were displayed.
backup-00fd2b2db4b88d97e
というSnapshotが取得されています。また、backup-1
のSnapshotbackup-0dbadec33e80446d4
も残っています。
続けてbackup-3
というバックアップを取得します。
5分ほど待つとバックアップのステータスが利用可能
になっていました。
ONTAP CLIからも確認します。管理アクティビティの監査ログとSnapshot一覧を確認します。
# 管理アクティビティの監査ログ ::> security audit log show -fields timestamp, node, application, location, vserver, username, input, state, message -state Error|Success -timestamp >"Sub Mar 19 12:33:00 2023" timestamp node application location vserver username input state message -------------------------- ------------------------- ----------- ----------- ---------------------- ----------------- ---------------------------------------------------------------------------------------------------------------------------------- ------- ------- "Sun Mar 19 12:33:56 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/storage/volumes/b05dd804-9a1a-11ed-946a-5191ab1a5297/snapshots?return_records=true : {"name":"backup-05765d703825c1eb3"} Success - "Sun Mar 19 12:33:56 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/cluster/licensing/access_tokens/ : {"client_secret":***,"grant_type":"client_credentials","client_id":"clientId"} Success - "Sun Mar 19 12:33:57 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers : isv_name="AWS FSx" Success - "Sun Mar 19 12:33:57 2023" FsxId05f72eb8f8d03c709-01 http 52.87.48.44 FsxId05f72eb8f8d03c709 fsx-control-plane POST /api/snapmirror/relationships/8131e849-c604-11ed-b946-e1cdfb9c8ff0/transfers?return_records=true : {"source_snapshot":"backup-05765d703825c1eb3"} Success - "Sun Mar 19 12:33:57 2023" FsxId05f72eb8f8d03c709-01 http 35.169.159.241 FsxId05f72eb8f8d03c709 fsx-control-plane DELETE /api/storage/volumes/b05dd804-9a1a-11ed-946a-5191ab1a5297/snapshots/a5d36e50-c604-11ed-b946-e1cdfb9c8ff0 Success - 5 entries were displayed. # backup から始まるSnapshot一覧 ::> snapshot show -vserver SVM -volume vol1 -snapshot backup* ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1 backup-00fd2b2db4b88d97e 128KB 0% 0% backup-05765d703825c1eb3 128KB 0% 0% 2 entries were displayed.
backup-05765d703825c1eb3
というSnapshotが取得されています。しかし、backup-1
のSnapshotbackup-0dbadec33e80446d4
が削除されています。
監査ログを確認すると、SnapMirrorで転送したタイミングでSnapshotを削除していることが分かります。
Snapshot policyで取得したSnapshotは1,023世代保持することが可能です。1,024世代保持するようなSnapshot policyを作成しようとすると怒られます。
::> snapshot policy create -policy daily -enabled true -schedule1 daily -count1 1024 -prefix1 daily Error: "1024" is an invalid value for field "-count1 <0..1023>"
ただし、ボリューム全体で保持できるSnapshotは1,023個であるため注意が必要です。
ONTAP 9.4以降では、Snapshotの最大数が拡張されました
- ONTAP 9.4以降では、ボリュームに格納できるSnapshotコピーは最大1023個です。
Snapshot policyのみはオススメしない理由
ボリュームが破損した場合にリストアできない
次にSnapshot policyのみはオススメしない理由です。
これは「ボリュームが破損した場合にリストアできない」という理由が挙げられます。
Snapshotはボリューム内に作成されます。そのため、ボリュームが破損した場合や誤ってSnapshotを削除してしまった場合はリストアすることができません。
一方バックアップによって取得されたSnapshotはMulti-AZの別の領域に転送されています。
複数のアベイラビリティーゾーンにまたがって保存される自動日次バックアップを提供し、すべてのバックアップデータにマルチ AZ の回復力を提供します。
そのため、ボリューム上のSnapshotにアクセスできなくなった場合に備えてバックアップを定期的に取得することがオススメです。
ただし、バックアップからリストアしたボリュームには、バックアップで取得したSnapshot以外が含まれません。つまりはSnapshotのバックアップはできないということです。
こちらの挙動を実際に試して確認します。
リストアの前に存在しているSnapshot一覧を確認します。
::> snapshot show -vserver SVM -volume vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1 5min.2023-03-19_1155 128KB 0% 0% 5min.2023-03-19_1200 128KB 0% 0% 5min.2023-03-19_1205 128KB 0% 0% 5min.2023-03-19_1210 128KB 0% 0% 5min.2023-03-19_1215 128KB 0% 0% 5min.2023-03-19_1220 128KB 0% 0% 5min.2023-03-19_1225 128KB 0% 0% backup-00fd2b2db4b88d97e 128KB 0% 0% 5min.2023-03-19_1230 128KB 0% 0% backup-05765d703825c1eb3 128KB 0% 0% 5min.2023-03-19_1235 128KB 0% 0% 5min.2023-03-19_1240 128KB 0% 0% 5min.2023-03-19_1245 128KB 0% 0% 5min.2023-03-19_1250 128KB 0% 0% 5min.2023-03-19_1255 128KB 0% 0% 5min.2023-03-19_1300 128KB 0% 0% 5min.2023-03-19_1305 128KB 0% 0% 5min.2023-03-19_1310 128KB 0% 0% 5min.2023-03-19_1315 128KB 0% 0% 5min.2023-03-19_1320 128KB 0% 0% 5min.2023-03-19_1325 128KB 0% 0% 5min.2023-03-19_1330 128KB 0% 0% 5min.2023-03-19_1335 128KB 0% 0% 5min.2023-03-19_1340 128KB 0% 0% 5min.2023-03-19_1345 128KB 0% 0% 5min.2023-03-19_1350 124KB 0% 0% 26 entries were displayed.
backup-3
というバックアップを使ってvol1_restore
というボリュームを作成してみます。
ONTAP CLIでvol1_restore
が作成されたことを確認します。
::> volume show -vserver SVM -volume vol1* -fields state, size, available, used, snapshot-count vserver volume size state available used snapshot-count ------- ------ ----- ------ --------- ------- -------------- SVM vol1 128MB online 55.83MB 65.77MB 27 SVM vol1_restore 128MB online 62.05MB 65.95MB 2 2 entries were displayed.
vol1_restore
内にあるSnapshotを確認します。
::> snapshot show -vserver SVM -volume vol1_restore ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1_restore backup-05765d703825c1eb3 764KB 1% 1% 5min.2023-03-19_1355 140KB 0% 0% 2 entries were displayed.
backup-3
のSnapshotであるbackup-05765d703825c1eb3
よりも古いSnapshotが存在していないですね。(5min.2023-03-19_1355
はSnapshot policyによってリストア後に取得されたSnapshot)
なお、バックアップからのリストアではなく、Snapshotからリストア(SnapRestore)をする場合は、使用したSnapshotよりも前に取得されているSnapshotを保持することができます。
以下の通りbackup-05765d703825c1eb3
を使ってSnapRestoreをしても、backup-05765d703825c1eb3
以前のSnapshotが保持されていることが分かります。
# backup-3 のSnapshotを使ってリストア ::> snapshot restore -vserver SVM -volume vol1 -snapshot backup-05765d703825c1eb3 Warning: Snapshot copy "backup-05765d703825c1eb3" is not the most recent copy. Promoting this Snapshot copy will delete all copies made after it. Do you want to continue? {y|n}: y Warning: Quota rules currently enforced on volume "vol1" might change during this operation. If the currently enforced quota rules are different from those in Snapshot copy "backup-05765d703825c1eb3", you might have to resize or reinitialize quotas on this volume after this operation. Do you want to continue? {y|n}: y Warning: Export policies currently enforced on the qtrees of volume "vol1" will not change during this operation. If the currently enforced export policies are different from those in Snapshot copy "backup-05765d703825c1eb3", reassign the export policies of the qtrees on this volume after this operation. Do you want to continue? {y|n}: y # SnapRestore後のSnapshot一覧 ::> snapshot show -vserver SVM -volume vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM vol1 5min.2023-03-19_1155 128KB 0% 0% 5min.2023-03-19_1200 128KB 0% 0% 5min.2023-03-19_1205 128KB 0% 0% 5min.2023-03-19_1210 128KB 0% 0% 5min.2023-03-19_1215 128KB 0% 0% 5min.2023-03-19_1220 128KB 0% 0% 5min.2023-03-19_1225 128KB 0% 0% backup-00fd2b2db4b88d97e 128KB 0% 0% 5min.2023-03-19_1230 128KB 0% 0% backup-05765d703825c1eb3 140KB 0% 0% 10 entries were displayed.
ボリュームの定期バックアップとSnapshot policyはどちらも設定しよう
Amazon FSx for NetApp ONTAPのボリュームの定期バックアップとSnapshot policyはどちらも設定することをオススメしました。
バックアップとSnapshotはお互い役割が異なるため、その役割を理解して効果的に利用しましょう。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!